package com.bailan.foreat.service;

import com.bailan.foreat.vo.CartAll;
import com.bailan.foreat.vo.CartVo;

import java.math.BigDecimal;
import java.util.List;

public interface CartService {
    /**
     * 添加购物车
     * @param userId
     * @param productId
     */
    void addCart(Integer userId, Integer productId);

    /**
     * 获取CartItemList
     * @param userId
     * @return
     */
    List<Object> getAllCartItems(Integer userId);
    List<CartVo> getAllCartVos(Integer userId);

    /**
     *  注意buyCount的值传递
     * @param userId
     * @param productId
     * @param buyCount 1代表+1，-1代表-1，0代表删除
     */
    String updateBuyCount(Integer userId, Integer productId, Integer buyCount);

    BigDecimal calTotalPrice(Integer userId , Integer[] productIds);

    CartAll calPrice(Integer userId, Integer[] productIds,Boolean excludeOthers);

    /**
     * 刷新购物车，删除没库存的商品
     * @param userId
     */
    boolean updateCart(Integer userId);


    /**
     * 判断购物车是否包含所有productIds的数据，一旦有一个不包含，则返回false（用于锁内判断）
     * @param productIds
     * @param userId
     * @return
     */
    boolean containProductIds(Integer[] productIds,Integer userId);

}
